Spring JDBC এ Batch Processing ব্যবহার করার মাধ্যমে একাধিক SQL অপারেশন (যেমন, ইনসার্ট, আপডেট, ডিলিট) একসাথে কার্যকর করা যায়। এতে করে ডেটাবেসের সাথে যোগাযোগের সংখ্যা কমে যায় এবং পারফর্মেন্স বৃদ্ধি পায়, বিশেষ করে যখন অনেক রেকর্ড একসাথে প্রক্রিয়া করতে হয়। নিচে উদাহরণ সহ ব্যাচ প্রোসেসিং ব্যবহার করার পদ্ধতি দেখানো হল।
ধরা যাক আমাদের একটি Employee
টেবিল রয়েছে, যেখানে কর্মীদের তথ্য ইনসার্ট করতে হবে। আমাদের উদ্দেশ্য হল একাধিক কর্মীকে একবারে ইনসার্ট করা।
application.properties
ফাইলে ডেটাবেস কনফিগারেশনপ্রথমে, application.properties
ফাইলে ডেটাবেস কনফিগারেশন করতে হবে:
# DataSource Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=root
spring.datasource.password=root_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Connection Pool Configuration (HikariCP)
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.connection-timeout=30000
# Hibernate Configuration (Optional)
spring.jpa.hibernate.ddl-auto=update
Employee
ক্লাস তৈরি করুন:এখানে একটি Employee
ক্লাস তৈরি করা হয়েছে, যা ডেটাবেস টেবিলের সাথে সম্পর্কিত:
public class Employee {
private int id;
private String name;
private double salary;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
এখন Spring JDBC এর JdbcTemplate
ব্যবহার করে ব্যাচ প্রক্রিয়া করব। এই উদাহরণে আমরা তিনটি কর্মীকে একসাথে ইনসার্ট করব।
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;
@Repository
public class EmployeeRepository {
private JdbcTemplate jdbcTemplate;
// Constructor injection for JdbcTemplate
public EmployeeRepository(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void insertEmployeesBatch() {
String sql = "INSERT INTO employee (id, name, salary) VALUES (?, ?, ?)";
// Batch data to be inserted
List<Object[]> batchArgs = new ArrayList<>();
batchArgs.add(new Object[] {1, "John Doe", 50000});
batchArgs.add(new Object[] {2, "Jane Smith", 55000});
batchArgs.add(new Object[] {3, "James Bond", 60000});
// Perform batch update
jdbcTemplate.batchUpdate(sql, batchArgs);
}
}
insertEmployeesBatch()
মেথড কল করুন:এখন, EmployeeService
ক্লাসে এই ব্যাচ ইনসার্ট মেথডটি কল করা হবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class EmployeeService {
private final EmployeeRepository employeeRepository;
@Autowired
public EmployeeService(EmployeeRepository employeeRepository) {
this.employeeRepository = employeeRepository;
}
public void batchInsertEmployees() {
employeeRepository.insertEmployeesBatch();
}
}
আপনি যদি এই ফাংশনালিটি ওয়েব ইন্টারফেসে ব্যবহার করতে চান, তবে Spring MVC Controller তৈরি করতে পারেন:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EmployeeController {
private final EmployeeService employeeService;
@Autowired
public EmployeeController(EmployeeService employeeService) {
this.employeeService = employeeService;
}
@GetMapping("/insert-batch-employees")
public String insertBatchEmployees() {
employeeService.batchInsertEmployees();
return "Batch Insert Completed!";
}
}
এখন আপনি Spring Boot অ্যাপ্লিকেশনটি রান করতে পারেন এবং /insert-batch-employees
URL এ গিয়ে ব্যাচ ইনসার্ট পরীক্ষা করতে পারেন।
এভাবে Spring JDBC এর Batch Processing ব্যবহার করে আপনি ডেটাবেসে কার্যকরী এবং দক্ষভাবে ডেটা প্রক্রিয়া করতে পারেন।
Read more